2016-08-25 9 views
-1

텍스트 상자의 내용을 .txt 파일 인 의 텍스트로 설정하려고합니다. 그러나 제대로 작동하지 않습니다. 프로그램을 컴파일 할 때 나는이 두 오류를 얻을(C++/CLI) 텍스트 상자의 내용을 .txt 내용으로 설정합니다.

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { 
    std::ifstream dat1("DataStore.txt"); 
    String^ textHolder; 
    if (dat1.is_open()) 
    { 
     while (getline(dat1, line)) 
     { 
      textHolder += line.c_str; 
     } 
     textBox1->Text = textHolder; 
     dat1.close(); 
    } 
    else textBox1->Text = "Unable to open file"; 
} 

:

내가 .txt 파일의 그것과 텍스트 상자의 내용을 "새로 고침"것 버튼이, 여기 내가 사용하고있는 코드입니다
error C3867: 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str': function call missing argument list; use '&std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str' to create a pointer to member 

error C2297: '+=' : illegal, right operand has type 'const char *(__thiscall std::basic_string<char,std::char_traits<char>,std::allocator<char>>::*)(void) throw() const' 

어떻게하면됩니까?

참고 : 나는

+1

실제 C++ 코드를 작성하는 것은 어떻습니까? "String ^"은 C++가 아닙니다. Microsoft의 표준 C++ 언어 변이입니다. –

+0

이것은 C++도 Windows API를 호출하지도 않습니다. C++/CLI를 사용하는 경우 적절한 태그를 사용하십시오. 이것이 .NET을 목표로한다면 적절한 태그를 사용하십시오. 그리고 그렇지 않은 사람들은 제거하십시오. (놀랍게도, 요즘 개발자들은 더 이상 사용하고있는 프로그래밍 언어 나 타겟 플랫폼조차 모르고 있습니다. [Visual Studio는 마음을 열었습니까?] (http://charlespetzold.com/etc/DoesVisualStudioRotTheMind.html) 그것.) – IInspectable

+0

글쎄, "String ^"대신 "String ^"을 사용할 때마다 "System :: String 클래스에 기본 생성자가 없습니다"라는 오류 메시지가 나타납니다. –

답변

2

) (c_str로 변경하는 것을 잊었다 텍스트 상자에 전체가 .txt 파일의 내용을 표시하는 것을 시도하고있다 당신은 .net을 이용할 수 있습니다. 당신은 당신을 위해 파일을 읽을 File 클래스를 사용할 수 있습니다 :

System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
{ 
    textBox1->Text = System::IO::File::ReadAllText("DataStore.txt"); 
} 

당신은 공정 작업 디렉토리가 파일을 포함하고 있기를 바랍니다해야합니다. GUI 응용 프로그램에서는 작업 디렉토리가 일반적으로 잘못 정의되어 있기 때문에 파일에 대한 전체 경로를 지정하는 것이 좋습니다.

C++을 배우려는 경우 .net C++/CLI WinForms 응용 프로그램을 시작할 수있는 곳이 아닙니다.

+0

나는 System :: IO 네임 스페이스 선언을 사용한다고 가정했다. 그것 없이는 이름을 완전히 한정해야합니다. 최신 업데이트 당. –

+0

도움을 주셔서 감사합니다! –

1

당신은 방법 c_str을 종료하면 C++/CLI를 사용하려는 경우가

+0

맞아, 내가 묻는 것과하지 않는 것을 할 수있는 방법이 있나? –

+1

@NopeNope 컴파일 후에 코드가 작동하지 않습니까? 디버깅 해 봤어? – nikitoz

+0

@DavidHeffernan'line'은 System :: String이 아닌 std :: string 일 가능성이 높습니다. 컴파일 오류를 확인하십시오. – nikitoz