C++ 为什么我的字符数组(字符串)中断?

C++ 为什么我的字符数组(字符串)中断?,c++,string,cout,C++,String,Cout,我已经编写了一个代码,从第一个字符串的元素复制到第二个字符串,除了空格。它只需要输入,如果它得到一个空格,它就不会将第一个字符串的字符插入第二个字符串。当我最后打印第二个字符串时,字符串部分断开。但是如果我输入任何字符而不是空格,第二个字符串就会被完全打印出来。我正在尝试,但是你能修复我的错误吗 #include <bits/stdc++.h> #include <iostream> using namespace std; int main() { char

我已经编写了一个代码,从第一个字符串的元素复制到第二个字符串,除了空格。它只需要输入,如果它得到一个空格,它就不会将第一个字符串的字符插入第二个字符串。当我最后打印第二个字符串时,字符串部分断开。但是如果我输入任何字符而不是空格,第二个字符串就会被完全打印出来。我正在尝试,但是你能修复我的错误吗

#include <bits/stdc++.h>
#include <iostream>

using namespace std;
int main()
{
    char str1[100];
    while(cin>>str1)
    {
        char str2[100];
        int k=0;
        for(int i=0; str1[i]!='\0'; i++)
        {
            if(str1[i]!=' ')
            {
                str2[k] = str1[i];
                k++;    
            }
        }
        str2[k] = '\0';
        cout<<"result is "<<str2<<endl;
    }
    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
char-str1[100];
而(cin>>str1)
{
char-str2[100];
int k=0;
对于(int i=0;str1[i]!='\0';i++)
{
如果(str1[i]!='')
{
str2[k]=str1[i];
k++;
}
}
str2[k]='\0';
cout您可以使用get()和put()来读取/显示字符串:

#include <iostream>
#include <string.h>

using namespace std;
int main(void)
{
    char s1[100], s2[100];
    int k=0;
    puts("Insert your string:");
    gets(s1);
    for (int i=0; i<strlen(s1); i++) {
        if (s1[i] != ' ') {
            s2[k]=s1[i];
            k++;
        }
    }
    puts(s2);
}
#包括
#包括
使用名称空间std;
内部主(空)
{
字符s1[100],s2[100];
int k=0;
放置(“插入字符串:”);
获取(s1);

对于(int i=0;i“字符串被部分拆分”是什么意思?您得到了什么输出?您希望得到什么?可能是因为
cin
不扫描空格。
cin>>str1
读取下一个单词直到空格字符,所以您的错误在于如何读取字符串。您可以使用
std::getline(cin,str)
,如果您想读入字符数组,则其中的
str
必须是
std::string
std::fgets()
。谢谢大家。我使用了它(fgets(str1,100,stdin))“MOehm有一个代码< > GETLION < /CODE”用于char数组……为什么这是C++的好主意?