首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求问:错在哪儿

2012-08-11 
求问:错在哪里?1 #include iostream2 #include fstream3 #include string4 using namespace std56

求问:错在哪里?
1 #include <iostream>
  2 #include <fstream>
  3 #include <string>
  4 using namespace std;
  5 
  6 void ReadData()
  7 {
  8 ifstream fin("run-X3-100001.pdb");
  9 string s2;
 10 const string s1 = "CA";
 11 while( fin >> s2 )
 12 {
 13 if(s2=s1)
 14 {
 15 ifstream fin("run-X3-100001.pdb");
 16 string s;
 17 while( getline(fin,s) )
 18 {
 19 cout << "Read from file: " << s << endl;
 20 }  
 21 }  
 22 }  
 23 }  
 24 
 25 int main()  
 26 {
 27 ReadData();
 28 }

上面这个程序的目的是将文件中有“CA”的行输出,过程是:先逐词读取文件,遇到“CA”时,将此行输出。提示错误是:could not convert ‘s2.std::basic_string<_CharT, _Traits, _Alloc>::operator= [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>, std::basic_string<_CharT, _Traits, _Alloc> = std::basic_string<char>]((* & s1))’ from ‘std::basic_string<char>’ to ‘bool’
不知道该如何修改,请各位指点,谢谢!
文件内容如下:
ATOM 5751 HN GLY L 29 9.895 5.339 -3.515 0.00 0.00 L  
ATOM 5752 CA GLY L 29 11.104 4.554 -1.965 0.00 0.00 L  
ATOM 5753 HA1 GLY L 29 11.167 4.645 -0.926 0.00 0.00 L  
ATOM 5754 HA2 GLY L 29 11.010 3.546 -2.342 0.00 0.00 L  
ATOM 5755 C GLY L 29 12.337 5.145 -2.657 0.00 0.00 L  
ATOM 5756 O GLY L 29 12.360 5.498 -3.830 0.00 0.00 L  
ATOM 5757 N GLY L 30 13.444 5.272 -1.955 0.00 0.00 L  
ATOM 5758 HN GLY L 30 13.372 5.115 -0.959 0.00 0.00 L  
ATOM 5759 CA GLY L 30 14.757 5.681 -2.497 0.00 0.00 L  
ATOM 5760 HA1 GLY L 30 14.925 5.292 -3.546 0.00 0.00 L  
ATOM 5761 HA2 GLY L 30 14.975 6.681 -2.289 0.00 0.00 L  
ATOM 5762 C GLY L 30 15.844 4.984 -1.768 0.00 0.00 L  
ATOM 5763 O GLY L 30 15.982 4.881 -0.519 0.00 0.00 L  
ATOM 5764 N VAL L 31 16.786 4.350 -2.524 0.00 0.00 L  
ATOM 5765 HN VAL L 31 16.686 4.447 -3.533 0.00 0.00 L  
ATOM 5766 CA VAL L 31 17.839 3.545 -2.095 0.00 0.00 L  
ATOM 5767 HA VAL L 31 18.146 4.001 -1.124 0.00 0.00 L  
ATOM 5768 CB VAL L 31 17.397 2.120 -1.721 0.00 0.00 L  
ATOM 5769 HB VAL L 31 16.684 2.152 -0.832 0.00 0.00 L  
ATOM 5770 CG1 VAL L 31 16.760 1.316 -2.877 0.00 0.00 L  
ATOM 5771 HG11 VAL L 31 16.367 0.321 -2.572 0.00 0.00 L  
ATOM 5772 HG12 VAL L 31 15.950 1.901 -3.339 0.00 0.00 L  
ATOM 5773 HG13 VAL L 31 17.512 1.143 -3.637 0.00 0.00 L  
ATOM 5774 CG2 VAL L 31 18.569 1.264 -1.201 0.00 0.00 L  
ATOM 5775 HG21 VAL L 31 19.221 0.869 -2.012 0.00 0.00 L  
ATOM 5776 HG22 VAL L 31 19.219 1.931 -0.690 0.00 0.00 L  
ATOM 5777 HG23 VAL L 31 18.219 0.455 -0.599 0.00 0.00 L[color=#FF0000][/color]

[解决办法]
13 if(s2=s1)
应该是:
13 if(s2==s1)



[解决办法]
LS好眼力
[解决办法]

探讨

恩,改了之后编译通过了,但是没按照预想的那样输出“CA”行,还是个无限循环,什么情况呀!

[解决办法]
探讨

引用:

恩,改了之后编译通过了,但是没按照预想的那样输出“CA”行,还是个无限循环,什么情况呀!
代码中有逻辑错误:每次找到CA后都会重新打开fin,使其回到了文件开头。

你的设计思路本身有问题。本应该每次读入一行,然后检查在该行中是否存在“CA”——这样一旦找到时无需重新读入该行。而你是先主次读入单词,再看看它是否“CA”,是的话则读入该行——但你没保留行首文件……

热点排行