0

私は数字の文字列を持っています。istringstreamを使用して、文字列の1桁ごとにint型として出力しようとしています。メインの変換関数に文字列全体を引数として渡すと問題なく動作しますが、インデックスで渡すとエラーが発生します。

インデックスを使用してこのコードを機能させ、文字列配列の各 1 桁を int として出力する方法。

これが私のコードです。

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int strToNum(string str)
{
    istringstream ss(str);
    int n;
    ss>>n;
    cout<<n;
}

int main()
{
string str = "123";
for(int i=0; i<str.length(); i++)
//strToNum(str);  Works fine
strToNum(str[i]); //raises error
}
4

5 に答える 5

5

str[i]は a ですがchar、 は a をstrToNum期待しているstringため、型エラーです。

于 2013-09-02T09:13:25.610 に答える
4

str[i]であるため、エラーが発生しますchar

ただしstrToNum(string str)string

これを試して :

for(int i=0; i<str.length(); i++)
  strToNum(string(1,str[i])); //Convert char to string

こちらをご覧ください

于 2013-09-02T09:13:54.400 に答える
2

他の人があなたのエラーを説明しました。これを機能させる方法は次のとおりです。

strToNum( std::string(1, str[i]) );

しかし、私は代わりにこれを行います:

for(int i=0; i<str.length(); i++)
    cout << str[i] - '0';

しかし、これが本当に必要かどうか自問してください。価値や表現に興味がありますか?後者の場合は、単にchars を出力します。

于 2013-09-02T09:16:41.773 に答える
1

istringstream はまったく必要ありません。

int strToNum(char ch)
{
    cout << ch;
}
于 2013-09-02T09:16:25.953 に答える