大家好,我的代码:
#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;
}
所以我只是插入一个字符串,程序应该cout<<
来自它的每一个字符串。但是这里出现了什么:
binary '!=' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)
我做错了什么?
顺便说一下。我在VS 2013 for Win Desktop工作(顺便说一句。第2卷 - 它是一个很好的C ++编码环境吗? - 2015年,但它在我的笔记本电脑上放慢速度)
答案 0 :(得分:2)
那么代码在很多层面都很糟糕,但为了保持简单并回答你的问题,我可能会使用迭代器。如果你正在使用C ++,请忘记那个旧的C风格。
试试这个:
void writeDown(const string & t)
{
for (string::const_iterator it = t.begin();
it != t.end();
++it)
{
cout << *it << endl;
}
}
请注意writeDown
不再将指针作为参数,而是对要打印的字符串的常量引用。
您必须更改主号码才能拨打writeDown
:
string t;
getline(cin, t);
writeDown(t);
如果你坚持使用“数组”方法,你必须像这样使用它,但是......
void writeDown(const string & t)
{
for (int i = 0; t.c_str()[i] != NULL; i++)
{
cout << t.c_str()[i] << endl;
}
}