2017-08-19 11 views
-3

私は行のテキストを置き換える作業コードを作ろうとしています。 boost_1_64_0を使用しています。なぜboost :: replace_all_copyが機能しないのですか? C++

getline (ifs, line); 
cout << line << endl; 

// 1. 
boost::replace_all(line, "abc", "hij"); 
boost::replace_all(line, "def", "klm"); 

// 2. 
line = boost::replace_all_copy 
boost::replace_all_copy<string> 
(
("abc def abc def", "abc", "hij") 
, "def" 
, "klm" 
); 

私はこれらのエラーを取得しています:

main.cpp||In function 'int main()':| 
main.cpp|37|error: no match for 'operator=' in 'line = boost::algorithm::replace_all_copy'| 
main.cpp|37|note: candidates are:| 
\mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|543|note: std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>]| 
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|543|note: no known conversion for argument 1 from '<unresolved overloaded function type>' to 'const std::basic_string<char>&'| 
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|551|note: std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>]| 
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|551|note: no known conversion for argument 1 from '<unresolved overloaded function type>' to 'const char*'| 
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|562|note: std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::operator=(_CharT) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>]| 
mingw\bin\..\lib\gcc\mingw32\4.7.1\include\c++\bits\basic_string.h|562|note: no known conversion for argument 1 from '<unresolved overloaded function type>' to 'char'| 
main.cpp|38|error: expected ';' before 'boost'| 
main.cpp|53|error: expected '}' before 'else'| 

エラーが発生したか、どのように私はそれらを修正することができますなぜ?あなたは明らかに壊れコード書かれている

答えて

5

:それはこのようにする必要がありますので

line = boost::replace_all_copy boost::replace_all_copy<string>(...) 
+0

ありがとう... '行=ブースト:: replace_all_copy( ブースト:: replace_all_copyを ( "ABC DEF ABC DEF" 「abc」、「hij」) 、「def」 「klm」 ) – user1141649

関連する問題