在C ++中将Char转换为Integer的问题

时间:2015-01-09 16:54:53

标签: c++ string char atoi

我一直在寻找这个,但其他答案让我很困惑。 我只想将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是否是数字。

4 个答案:

答案 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;);