无法将字符串转换为char数组

拉贾

我正在尝试将带空格的字符串转换为不带空格的char数组。

这是我尝试过的

string str;
    cout << "Enter a string: ";
    getline(cin, str);
    int TempNumOne=str.size();
        char Filename[100];
        for (int a=0;a<=TempNumOne;a++)
                {
                    cout<<str[a]<<endl;
                    if(str[a]!=' ')
                        Filename[a]=str[a];
                }

        cout<<Filename;

输出看起来像这样

Enter a string: hello world
h
e
l
l
o

w
o
r
l
d

hello

hello被存储。为什么会发生这种情况,我该如何解决?

山姆·瓦尔沙夫奇克(Sam Varshavchik)

这是因为:

  if(str[a]!=' ')
          Filename[a]=str[a];

在“ hello world”中,str[4]isostr[6]is w上面的代码将:存储oinFilename[4]win Filename[6],而不是Filename[5]计算机只会执行您要执行的操作,现在执行您要执行的操作。您的逻辑确实跳过了该空间,但所做的只是没有将其复制到Filename缓冲区的相应位置这还不足以完成给定的任务。

要正确执行此操作,您需要维护一个单独的索引变量,将其调用b,例如,将其初始化为0,然后:

 if(str[a]!=' ')
      Filename[b++]=str[a];

并且不要忘了Filename在结尾处以null终止

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章