如果我在一行上有单独的字符,例如:4356 我怎么能将它们转换成最终的整数?所以不是'4''3''5''6',而是4356。 所以,我知道我需要取第一个数字并乘以10然后加上下一个数字然后将所有数字乘以10直到我到达最后一个数字。我怎样才能以有效的非崩溃方式写出来?
答案 0 :(得分:0)
char chars[NUM_OF_CHARS] = { '4','5','8'};
int value = 0;
for(int i=0;i<NUM_OF_CHARS;i++)
{
if(chars[i] >= '0' && chars[i] <= '9') {
value*=10;
value+=chars[i] - '0';
}
}
如果你的字符是以空字符结尾的字符串,请在评论建议中使用atoi()。
答案 1 :(得分:0)
使用C ++,您可以使用std::cin
读取char
,检查它是否为数字,然后操纵总数。
int total = 0;
char c;
while( std::cin >> c && c != '\n' )
{
if( c >= '0' && c <= '9' )
total = total * 10 + (c - 48);
}
std::cout << "Value: " << total << std::endl;
答案 2 :(得分:0)
您可以读取std :: string类型的对象中的输入,然后使用函数std::stoull
(或std::stoi
或此函数族中的其他函数)
例如
std::string s;
std::cin >> s;
unsigned long long = stoull( s );
或者你可以简单地读入一些完整的对象:)
例如,如果in_file
是某个输入文件流,那么您可以编写
unsigned long long n;
while ( in_file >> n ) std::cout << n;
或者
std::vector<unsigned long long> v;
v.reserve( 100 );
unsigned long long n;
while ( in_file >> n ) v.push_back( n );
答案 3 :(得分:0)
以下是使用sringstream
的示例:
#include <string>
#include <iostream>
#include <sstream>
int main()
{
int n;
std::string s ="1234";//or any number...
//or: char s[] = "1234";
std::stringstream strio;
strio<<s;
strio>>n;
std::cout<<n<<std::endl;
return 0;
}