[英]Read space separated numbers from char array to separate int(s)
我有一個char數組(讓我們說“ 13 314 43 12”),我想將第一個數字(13)放入一個單獨的integer中。 我怎么做 ? 有什么方法可以將第一個數字拆分為10 + 3,然后將它們加到int上嗎?
我不確定得到1和3是什么意思,但是如果要將空格分隔的字符串拆分為整數,建議使用流。
std::istringstream iss(s);
int n;
while(iss >> n)
{
std::cout << "Integer: " << n << std::endl;
}
[edit]或者,您可以自己解析字符串,如下所示:
char* input = "13 314 43 12";
char* c = input;
int n = 0;
for( char* c = input; *c != 0; ++c )
{
if( *c == ' ')
{
std::cout << "Integer: " << n << std::endl;
n = 0;
continue;
}
n *= 10;
n += c[0] - '0';
}
std::cout << "Integer: " << n << std::endl;
#include <cstring>
#include <iostream>
#include <stdlib.h>
int main ()
{
char str[] = "13 45 46 96";
char * pch = strtok (str," ");
while (pch != NULL)
{
std::cout << atoi(pch) << "\n"; // or int smth=atoi(pch)
pch = strtok (NULL, " ");
}
return 0;
}
如果只想要第一個數字,請使用atoi()或strtol()之類的函數。 他們提取一個數字,直到它遇到以空終止的字符或非數字數字。
根據您的問題,我認為下面的代碼會給您一些幫助。
#include <string>
#include <iostream>
using namespace std;
int main(){
char s[] = "13 314 43 12";
//print first interger
int v = atoi(s);
cout << v << std::endl;
//print all integer
for (char c : s){
if (c == ' ' || c == '\0'){
}else{
int i = c - '0';
cout << i << std::endl; // here 13 print as 1 and 3
}
}
}
如果要打印第一個號碼,可以使用
int v = atoi(s);
cout << v << std::endl;
如果要拆分並打印所有整數,例如:13為1,3
for (char c : s){
if (c == ' ' || c == '\0'){
}else{
int i = c - '0';
cout << i << std::endl; // here 13 print as 1 and 3
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.