2014-10-07 2 views
0

다음 코드를 사용하여 텍스트 파일의 단어를 분할하려고합니다.리소스에서 텍스트 파일 읽기

파일은 다음과 같이 작성 : 다음

하고 코드를 : 같은 txt 파일과 함께 완벽하게 작동 내가 작업 한 C++ 프로그램에서 편집

 string resource_data = Properties.Resources.textfile; 
     string[] result = resource_data.Split('"'); 
     foreach (string lines in result) 
     { 
      if(comboBox1.Text == result[0]) 
      { 
       richTextBox2.Text = result[2]; 
      } 
     } 

촬영 &.

   String^ resource_data = "textfile.txt"; 
      try 
      { 
       StreamReader^ DataIn = File::OpenText(resource_data); 
       String^ DataStr; 
       int count = 0; 
       array<String^>^ result; 
       array<Char>^ separ = gcnew array<Char>{'"'}; 

       while((DataStr = DataIn->ReadLine()) != nullptr) 
       { 
        count++; 
        result = DataStr->Split(separ); 
        if(comboBox1->Text == result[0]) // result[0] = Name 
        { 

코드가 수행하는 것 .. 각 행을 자체적으로 읽습니다. 각 줄마다 첫 번째 단어를 표시 결과 [0]은 각 줄의 두 번째 단어로 result [1] 등입니다. 콤보 상자에서 단어를 선택하면 텍스트 파일과 동일하고 해당 줄이 사용되는지 확인합니다 결과 [x]. 그러나 C#에서는 모든 단어에 결과 [x]를 제공하고 선은 중요하지 않습니다.

어떻게하면 C#에서 작동하지만 resources.resx에 텍스트 파일이있는 다음 코드를 C++로 만들 수 있습니까?

답변

0

문제가 무엇인지 알 것 같습니다. 먼저 문자열 resource_data를 별도의 줄로 분할해야합니다. 당신은 단지 파일의 경로를 저장하는 경우 또한

using (StringReader reader = new StringReader(resource_data)) 
{ 
    while (reader.Peek() >= 0) 
    { 
     string[] parts = reader.ReadLine().Split('"'); 
     if (comboBox1.Text == result[0]) 
     { 
      richTextBox2.Text = result[2]; 
     } 
    } 
} 

:

string[] lines = resource_data.Split(new string[1] { Environment.NewLine }, StringSplitOptions.None); 
foreach (var line in lines) 
{ 
    string[] parts = line.Split('"'); 
    if (comboBox1.Text == result[0]) 
    { 
     richTextBox2.Text = result[2]; 
    } 
} 

당신은이가 StringReader를를 사용 할 수있는 : 당신은 새로운 라인 문자 (들)에 분할 resource_data하여이 작업을 수행 할 수 리소스에서 파일을 열고 읽을 수 있습니다.

using (StreamReader reader = File.OpenText(resource_path)) // path to file 
{ 
    while (reader.Peek() >= 0) 
    { 
     string[] parts = reader.ReadLine().Split('"'); 
     if (comboBox1.Text == result[0]) 
     { 
      richTextBox2.Text = result[2]; 
     } 
    } 
} 
+0

답장을 보내 주셔서 감사합니다. 첫 번째 작품은 완벽하게 작동했습니다. 두 번째 줄에는 항상 null이 있고 세 번째 줄에는 오류가 있습니다. 경로에 잘못된 문자가 있습니다. 다시 한 번 도움을 주셔서 감사합니다 :) – Xakzi

+0

세 번째는 파일의 내용보다는 파일의 경로 만 저장하는 것이지만 어쨌든 도와 줘서 기쁩니다! –