2017-01-03 111 views
-5

我有一個小的任務,這部分需要我以字符串的形式從文件中獲取輸入,並將它們放入char數組中,以便檢查字符串是否包含任何'*'字符它的結束。使用cstring將字符串轉換爲字符數組

我已經能夠從文件中成功提取字符串,但是我沒有找到一種方法將它們放置在字符數組中,以便我可以處理它們。

如果有人讓我知道如何使用cstring庫將字符串放入char數組,我將不勝感激。請記住,字符串是從文件中獲取的,而不是用戶輸入。

一些我試過的方法如下:

//Try 1 
char CstringArray[] = LineFromFile; 

//Try 2 
char CstringArray[100] = LineFromFile; 

//Try 3 
ifstream Test("Test.txt"); 
Test>>CstringArray; 

//Try 4 
ifstream Test("Test.txt"); 
Test>>CstringArray[0]; 

非常感謝您

+0

您好,歡迎來到SO。請[參觀](http://stackoverflow.com/tour)並閱讀[幫助頁面](http://stackoverflow.com/help)。這裏有一個不錯的[C++書籍]列表(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 – 2017-01-03 10:01:58

+0

似乎我總是問錯誤的問題,你能幫我@RawN明白我在做什麼錯,我繼續得到負面聲譽和人們不回答我的問題? 謝謝 –

+0

首先在上面的文字中沒有問題。如果這是一項任務,那麼您應該提供迄今爲止所嘗試的內容。上面的例子可能看起來微不足道,也許dvoters希望你谷歌那部分。提出具體問題,提供一個MCVE,遵循指導原則。不要太擔心降價,我們都經歷過(現在仍然如此)。 – 2017-01-03 12:59:00

回答

0

因爲這是一個任務,你的教授可能不會高興你使用的是C++的功能有,特別是如果你不理解它,但因爲它是一個班輪,我想我會告訴你如何打印以星號結尾的所有string。既然你已經成功打開該文件ifstream Test你可以這樣做:

copy_if(istream_iterator<string>(Test), istream_iterator<string>(), ostream_iterator<string>(cout, " "), [](const auto& i) { return !empty(i) && i.back() == '*'; }) 

編輯:

  1. 我使用的是istream_iterator每個stringTest閱讀和istream_iterator,我立即對這些值進行操作,但是如果您需要將所有string s保存到vector<string>,您也可以這樣做:vector<string> CstringArray{ istream_iterator<string>(Test), istream_iterator<string>() }
  2. 我使用的是ostream_iterator直接流出來我選擇string真是讓人不是將它們存儲
  3. 我使用copy_if超過遍歷所有string S中的流中,只選擇那些符合給定的標準
  4. 我使用lambda:[](const auto& i) { return !empty(i) && i.back() == '*'; }有條件地選擇以星號結尾的非空字符串
+0

你說得對,如果我使用這個,他會不高興,但是如果你願意向我解釋它,我仍然希望瞭解它,我試圖弄清楚自己並操縱它,取得一點成功。 –

+0

@BlacKnightBK我已經添加了一些鏈接到我用來完成這個C++工具。如果你想了解他們,你需要查看文檔。如果您可以花時間瞭解這些工作方式,那麼您應該能夠使用教練可能期望的原始方法解決您的問題。 –

+0

非常感謝:) 這確實有幫助但是我需要一些時間才能弄清楚 –