簡體   English   中英

使用指針處理字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM