2009-03-14 5 views
0

デバッグ時に私は正しいと思っていました。しかし、それは修正されたベクトルの最初の要素として初めてのメンバーに過ぎませんでした。ベクトルの大文字にするためのループ<struct>要素

while (!inFile->eof()) 
{ 
    getline(*inFile, str1, ',');  
    sStruct.str1 = str1; 
    getline(*inFile, str2, ','); 
    sStruct.str2 = str2; 
    getline(*inFile, str3, ','); 
    sStruct.str3 = atof(str3.c_str()); 
    getline(*inFile, str4); 
    sStruct.str4 = atof(str4.c_str()); 

    myLength = sStruct.str1.length(); 

    for(; sIndex < myLength; sIndex++) 
    { 
     if (97 <= str4[sIndex] && str4[sIndex] <= 122) 
     { 
      str4[sIndex] -= 32; 
     } 
    } 

    sStruct.str1 = str1; 
    vectorData->push_back(sStruct); 
} 

のみ全て大文字に、この場合、0009で、最初の構造体のメンバを変更する、私は、ファイルを読み取るために選択した方法でこのコードを実装します。すべての文字は、同じ構造体str1の影響を受けません。

私のループは何をしていませんか?

+0

なぜコードはstr4に変更されますが、どこにも保存されませんか? –

+0

sIndexを初期化するか、グローバル化する必要がありますか? – cobbal

答えて

3

は、すでに述べたように、あなたが最初にあなたのコードに見なければならないいくつかのものがあるコメントで次のように述べた。

  • は、あなたがこのwhileループに入る前に、SINDEXの値は何ですか?
  • forループでstr4 []を使って作業していますが、長さを取得してstr1に代入するのはなぜですか?
  • 本当に、str1だけが大文字に変更されていますか?与えられたコードが...それをしない
  • toupper()方法を大文字の計算を自分で行うが、使用しない代わりに
1
私は、それはきれいだ変換するには、ヘッダーのアルゴリズムから変換を使用してお勧めします

transform(str4.begin(), str4.end(), str4.begin(), toupper); 
関連する問題