我一直在寻找这个,但其他答案让我很困惑。
我只想将char转换为C ++中的整数。我读过有关atoi
函数的内容但是
它对我不起作用。这是我的代码:
string WORD, word;
cout<<"PLEASE INPUT STRING: "<<endl;
getline(cin,WORD);
for(int i=0; i<WORD.length(); i++){
if(isdigit(WORD[i])){
word = atoi(WORD[i]); //Here is my problem.
}else{
cout<<"NO DIGITS TO CONVERT."<<endl;
}//else
}//for i
BTW,我检查了char是否是数字。
答案 0 :(得分:3)
atoi采用NULL终止字符串。它不适用于单个角色。
你可以这样做:
int number;
if(isdigit(WORD[i])){
char tmp[2];
tmp[0] = WORD[i];
tmp[1] = '\0';
number = atoi(tmp); // Now you're working with a NUL terminated string!
}
答案 1 :(得分:3)
如果WORD[i]
是数字,您可以使用表达式WORD[i] - '0'
将数字转换为十进制数。
string WORD;
int digit;
cout<<"PLEASE INPUT STRING: "<<endl;
getline(cin,WORD);
for(int i=0; i<WORD.length(); i++){
if ( isdigit(WORD[i]) ){
digit = WORD[i] - '0';
cout << "The digit: " << digit << endl;
} else {
cout<<"NO DIGITS TO CONVERT."<<endl;
}
}
答案 2 :(得分:2)
**您可以通过以下方式解决:
digit = WORD[i] - '0';
用错误的行替换它。
你可以
添加:为cruelcore注意编辑**
答案 3 :(得分:1)
通过user4437691回答,添加。你不能使用=
将字符串设置为int,但是你可以根据这个引用将它设置为char:http://www.cplusplus.com/reference/string/string/operator=/
所以把它投到char。
word =(char)(WORD [i] - &#39; 0&#39;);