簡體   English   中英

無法將字符串轉換為char數組

[英]Not able to convert string into a char array

我正在嘗試將帶空格的字符串轉換為不帶空格的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]o ,而str[6]w 上面的代碼將:將o存儲到Filename[4] ,將wFilename[6] ,而不是Filename[5] 一台計算機只會執行您要執行的操作,現在執行您要執行的操作。 您的邏輯確實跳過了該空間,但是所做的只是沒有將其復制到Filename緩沖區的相應位置。 這還不足以完成給定的任務。

為了正確執行此操作,您需要維護一個單獨的索引變量,將其稱為b ,例如,將其初始化為0,然后:

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

並且不要忘記在Filename末尾使用null終止。

您的Filename數組未初始化。 這意味着它可能最初包含任何值,包括零(可能會發生這種情況)。

現在考慮您的算法-您開始將數據復制到第一個空格,然后跳過其位置並繼續第二個單詞。 通過跳過,可以將與Filename中空間位置相對應的位置保留為其原始狀態,即未初始化。 如果原始值是0,則它對應於字符串終止符( \\0 )。 當您打印字符串時,解析過程在遇到\\0停止,因此您看不到其余的打印數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM