[英]Working with strings using 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(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年,但是我的筆記本電腦運行緩慢)
該代碼在許多級別上都是不好的,但是為了保持簡單並回答您的問題,我可能會使用迭代器。 如果您使用的是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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.