如何c++中把含有空格的字符串按空格拆分,赋给不同变量?

2025-03-04 08:12:21
推荐回答(5个)
回答1:

可以采用C++系统的stringstream字符流类完成带空格的字符串数据的拆分,赋值给不同的变量。参考代码:

#include 
#include 
using namespace std;
int main()
{
    istringstream istr ("123 56.7");
    cout << istr.str()<    int a;
    istr>>a;
    cout<<"int a="<    float b;
    istr>>b;
    cout<<"float b="<    return 0;
}

要使用ostringstream、istringstream、stringstream这三个类创建对象需要包含sstream头文件。

  • istringstream类用于执行C++风格的串流的输入操作。 该类是从istream和stringstreambase派生而来(参考cin)

  • ostringstream类用于执行C++风格的串流的输出操作。 该类是从ostream和 stringstreambase派生而来(参考cout)

  • strstream类同时可以支持C++风格的串流的输入输出操作。该类是从iostream类和stringstreambase派生而来。

回答2:

分割字符串可以采用strok函数
void print_tokens(char *line)
{
static char whitespace[] = "\t\b\n\v\r "; //可以任意定义,这只是个示例
char *token;

for (token = strtok(line, whitespace); token != NULL;
token = strtok(NULL, whitespace))
printf("Next token is %s \n", token);
}
这是一个网上找的使用范例。你可以参照。

回答3:

#include
#include
using namespace std;

void main()
{
string str;
while(getline(cin,str))
cout<//或用下面t的形式:
//getline(cin,str);
//cout<
}

回答4:

strtok是c语言的一个函数,古老而造型不好⋯⋯这个模式是出名的失败(真事)

纯c++可以这么写,在不严格要求效率的情况下:

#include
#include

int main(void)
{
stringstream a;
a.str("a bc def ghij");//分割这个字符串到一个vector数组
vector b;
while(a){
string c;
a>>c;
b.push_back(c);
}

for(int i=0;i cout<<" "<
return 0;
}

回答5:

C语言可以吗?
#include
#include
#include
#include
typedef struct tagABC
{
int a;
double b;
char c[10];
}ABC;
#define MAXCHAR 100
ABC abc;
int main()
{
FILE *filein;
s[MAXCHAR];
char *p1,*p2;
int i=0;
if((filein=fopen("filein.txt","r"))==NULL){
printf("can`t open filein.txt");
return -1;
}
while((s[i++]=(fgetc(filein))!=EOF)&&i s[i]='\0';
p1=strchr(s,' ');
*p1='\0';
++p1;
p2=strchr(p1,'\t');
*p2='\0';
++p2;
abc.a=atoi(s);
abc.b=atof(p1);
strcpy( abc.c,p2);
memset(s,0,MAXCHAR);
i=0;
fclose(filein);
return 0;
}