繁体   English   中英

读取用逗号分隔的字符串

[英]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也吃了您的分隔符(,)。

为避免这种情况,您可以使用扫描集。

scanf(" %[^,\n],", word);

扫描集之前的空格是为了避免单词之前有任何空格。 您的单词可能以换行符或逗号结尾。

编辑:

%[^]之间的任何字符都将表示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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM