2009-04-30 13 views
1

Linuxパイプから入力を受け取り、さらに処理するためにstd :: coutに出力するC++プログラムがあります。C++ std :: cinからXバイトを読み込み、文字列をXバイト長に切り捨てる

は現在、私のコードは次のようになります。

std::istreambuf_iterator<char> it(std::cin); 
std::istreambuf_iterator<char> end; 
std::string str(it, end); 

//Lots of string manipulation here. 

str = str.substr(0, 65535); 
std::cout << str << std::endl; 

入ってくる文字列が巨大であるため、これは無駄です。

  1. 100kBのcinをC++の文字列に読み込み、残りの部分を無視するにはどうすればよいですか?
  2. C++文字列を文字の代わりに65535バイトに切り詰めるにはどうすればよいですか? (私は将来的にマルチバイト文字を処理する必要があります。)

答えて

2
  1. のstd :: cin.read(& bufは、100 * 1024);
  2. std :: string.size()はnumバイトを返しますが、私はかなり確信しています。
+0

ええと、std :: stringはバイト単位で考える。コードページ932からUTF-8を知らない –

関連する問題