저는 Microsoft Visual C++로 작성 중이며 istream_iterator
을 사용하여 프로그램을 표준 입력 또는 파일에서 읽으려고합니다. 인터네트를 인터넷으로 검색하는 것은 그것이 얼마나 단순해야한다고 생각하는지 보여주지 못했습니다. 그래서 예를 들어, 나는 매우 쉽게 쓸 수 및 표준 입력으로부터 읽어istream_iterator를 사용하여 표준 입력 또는 파일에서 읽기
#include <iostream>
#include <string>
#include <iterator>
using namespace std;
int main()
{
istream_iterator<string> my_it(cin);
for (; my_it != istream_iterator<string>(); my_it++)
printf("%s\n", (*my_it).c_str());
}
아니면이를 작성하고 파일에서 읽을 수 있습니다
#include <iostream>
#include <string>
#include <iterator>
#include <fstream>
using namespace std;
int main(int argc, char** argv)
{
ifstream file(argv[1]);
istream_iterator<string> my_it(file);
for (; my_it != istream_iterator<string>(); my_it++)
printf("%s\n", (*my_it).c_str());
}
하지만 어떻게 내가 그래서이 두 가지를 결합 할 간단한 (argc == 2)
체크를 사용하면 파일 스트림이나 stdin으로 입력 스트림 반복자를 초기화하고 내 기쁜 방법으로 진행할 수 있습니까?
이것은 r 값을 비 const 참조에 바인드하려고 시도하며 C++에서는 유효하지 않습니다. –
@Alex : 하나의 피연산자가 다른 유형의 참조로 암시 적으로 변환 될 수있는 경우 결과는 왼쪽 값입니다. http://www.open-std.org/jtc1/sc22/wg21/docs/wp/html/nov97-2/expr.html#expr.cond –
올바른 것으로 보입니다 - VC 2008에서는 문제없이 컴파일합니다. . VC 2005 버그와 같습니다. –