我正在尝试将带空格的字符串转换为不带空格的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
被存储。为什么会发生这种情况,我该如何解决?
这是因为:
if(str[a]!=' ')
Filename[a]=str[a];
在“ hello world”中,str[4]
iso
和str[6]
is w
。上面的代码将:存储o
inFilename[4]
和w
in Filename[6]
,而不是Filename[5]
。计算机只会执行您要执行的操作,现在执行您要执行的操作。您的逻辑确实跳过了该空间,但所做的只是没有将其复制到Filename
缓冲区的相应位置。这还不足以完成给定的任务。
要正确执行此操作,您需要维护一个单独的索引变量,将其调用b
,例如,将其初始化为0,然后:
if(str[a]!=' ')
Filename[b++]=str[a];
并且不要忘了Filename
在结尾处以null终止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句