Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用指针处理字符串_C++_String_Pointers - Fatal编程技术网

C++ 使用指针处理字符串

C++ 使用指针处理字符串,c++,string,pointers,C++,String,Pointers,大家好,这是我的代码: #include <iostream> #include <string> using namespace std; void writeDown(string*t) { for (int i = 0; *(t+i)!=NULL; i++) { cout << *(t+i) <<endl; } } int main() { string t; getline(ci

大家好,这是我的代码:

#include <iostream>
#include <string>

using namespace std;

void writeDown(string*t)
{
    for (int i = 0; *(t+i)!=NULL; i++)
    {
        cout << *(t+i) <<endl;
    }
}

int main()
{
    string t;
    getline(cin, t);
    string *wsk = &t;
    writeDown(wsk);
    return 0;
}
#包括
#包括
使用名称空间std;
无效减记(字符串*t)
{
对于(int i=0;*(t+i)!=NULL;i++)
{

Code

代码在很多层次上都是坏的,但是为了保持简单,回答你的问题,我可能会使用迭代器。如果你使用C++,就忘记了旧的C风格。 试试这个:

void writeDown(const string & t)
{
    for (string::const_iterator it = t.begin();
        it != t.end();
        ++it)
    {
        cout << *it << endl;
    }
}
如果你坚持使用“数组”方法,你必须这样使用它,但是

void writeDown(const string & t)
{
    for (int i = 0; t.c_str()[i] != NULL; i++)
    {
        cout << t.c_str()[i] << endl;
    }
}
void writeDown(常量字符串&t)
{
for(int i=0;t.c_str()[i]!=NULL;i++)
{

你是不是想把
std::string*
当作一个
char*
。这不是它的工作原理,它们是非常不同的东西。哦,也许吧,那么正确的方法是什么呢?如果
std::string
类似于
const char*
,那么
std::string*
类似于什么呢?@Frynio如果我的回答是这样的话为你工作,你能不能把它标记为被接受?是一样的东西(我说的“相同”是指速度)当我使用
asterix&
*
作为参数时?@Frynio过早优化是愚蠢的根源。专注于编写易于理解和维护的代码,然后根据评测结果进行优化。谢谢。我总是会做一些不重要的事情,专注于它们,而不是我的主要目标
void writeDown(const string & t)
{
    for (int i = 0; t.c_str()[i] != NULL; i++)
    {
        cout << t.c_str()[i] << endl;
    }
}