读取以逗号分隔的字符串
Read string separated by comma
对于整数输入,您可以这样做。
for (int i = 0; i < count; i++) {
scanf("%d,", &storage[i]);
}
有没有办法读取以逗号分隔的字符串输入?例子。字符串 1、字符串 2、字符串 3
以下内容似乎不起作用,或者我遗漏了什么?
for (int i = 0; i < count; i++) {
scanf("%s,", storage[i]);
}
我们还没有接触过使用strtok,所以我可能会被问到为什么要使用它。
它正在处理整数输入,所以我想知道字符串输入是否也可以自动将它们分开。
所以我想我必须一个接一个地读取字符串输入。
%s eats your separator(,) too.
要避免这种情况,您可以使用扫描集。
scanf(" %[^,\n],", word);
扫描集前的space是为了避免space字前出现任何白色。你的话可能以换行符或逗号结尾。
编辑:
%[^
和 ]
之间的任何字符都将表示 cstring 的结尾。在这里,我们有逗号 (,
) 和换行符 (\n
)。所以,%[^,\n]
读取了我们想要的字符串。现在,输入后面可能包含一个 ,
。 %[^,\n]
旁边的 ,
将其从输入中丢弃,就像您在有关整数的示例中所做的那样。
#include<iostream>
#include<math.h>
using namespace std;
int getnum(string s,int j,int k)
{
int len=s.length();
int l=j-k;
int num=0;
for(int i=k;i<=j;i++)
{
if(s[i]==',' )
{
num+=(s[i]-'0')*pow(10,l);
}
else
{
num+=(s[i]-'0')*pow(10,l);
l--;
}
}
return num;
}
int main()
{
int n;
cin>>n;
int a[10];
int m=0;
string s;
cin>>s;
int len=s.length();
static int f=0,j=0,i,k=0;
int num[n];
for(i=0;i<=len;i++)
{
if(s[i]==','|| i==len)
{
if(k==0)
{
num[f]=getnum(s,j-1,k);
}
else
{
num[f]=getnum(s,j-1,k);
}
f++;
k=i+1;
j=i+1;
continue;
}
else
{
j++;
continue;
}
}
for(int i=0;i<f;i++)
{
cout<<num[i]<<endl;
}
return 0;
}
对于整数输入,您可以这样做。
for (int i = 0; i < count; i++) {
scanf("%d,", &storage[i]);
}
有没有办法读取以逗号分隔的字符串输入?例子。字符串 1、字符串 2、字符串 3
以下内容似乎不起作用,或者我遗漏了什么?
for (int i = 0; i < count; i++) {
scanf("%s,", storage[i]);
}
我们还没有接触过使用strtok,所以我可能会被问到为什么要使用它。 它正在处理整数输入,所以我想知道字符串输入是否也可以自动将它们分开。 所以我想我必须一个接一个地读取字符串输入。
%s eats your separator(,) too.
要避免这种情况,您可以使用扫描集。
scanf(" %[^,\n],", word);
扫描集前的space是为了避免space字前出现任何白色。你的话可能以换行符或逗号结尾。
编辑:
%[^
和 ]
之间的任何字符都将表示 cstring 的结尾。在这里,我们有逗号 (,
) 和换行符 (\n
)。所以,%[^,\n]
读取了我们想要的字符串。现在,输入后面可能包含一个 ,
。 %[^,\n]
旁边的 ,
将其从输入中丢弃,就像您在有关整数的示例中所做的那样。
#include<iostream>
#include<math.h>
using namespace std;
int getnum(string s,int j,int k)
{
int len=s.length();
int l=j-k;
int num=0;
for(int i=k;i<=j;i++)
{
if(s[i]==',' )
{
num+=(s[i]-'0')*pow(10,l);
}
else
{
num+=(s[i]-'0')*pow(10,l);
l--;
}
}
return num;
}
int main()
{
int n;
cin>>n;
int a[10];
int m=0;
string s;
cin>>s;
int len=s.length();
static int f=0,j=0,i,k=0;
int num[n];
for(i=0;i<=len;i++)
{
if(s[i]==','|| i==len)
{
if(k==0)
{
num[f]=getnum(s,j-1,k);
}
else
{
num[f]=getnum(s,j-1,k);
}
f++;
k=i+1;
j=i+1;
continue;
}
else
{
j++;
continue;
}
}
for(int i=0;i<f;i++)
{
cout<<num[i]<<endl;
}
return 0;
}