0

更新:はい、答えて解決しました。また、私が抱えていた実際の問題である出力の問題を見つけることもできました。部分文字列エラーが背後にあると思っていましたが、それが修正されたときに出力の問題が持続したため、間違っていました。計算の単純な取り違えであることがわかりました。私は 762 ではなく 726 を引いていました。数時間前にこれを実行できたはずです... Lulz. 私が言えるのはそれだけです.Lulz。

私は自分で C++ を教えています (彼らの Web サイトのチュートリアルを使用)。これまでに学んだことではできないことをする必要があるとき、私は時々先を行ってきました。さらに、私はこれを比較的早く書きました。そのため、私のコードが洗練されていない、または専門的なレベルで受け入れられないように見える場合は、今はそれを許してください。私の現在の唯一の目的は、この質問に答えてもらうことです。

このプログラムは、私が持っているテキスト ファイルの各行を取得します。テキスト ファイルの行は次のようになっていることに注意してください。

.123.456.789

366行あります。私がこれに対処するために最初に書いたプログラムは、各行の3つの数字のそれぞれを手動で入力しました。ご想像のとおり、それは非常に非効率的でした。このプログラムの目的は、各番号をテキストファイルから取り出し、関数を実行し、結果を別のテキストファイルに出力することです。これは、ファイルの終了に達するまで行ごとに行います。

このエラーの原因について詳しく調べましたが、私の場合は原因がわかりません。問題の原因が含まれていると思われるコードの一部を次に示します。

int main()
{
    double a;
    double b;
    double c;
    double d;
    double e;
    string search; //The string for lines fetched from the text file
    string conversion;
    string searcha; //Characters 1-3 of search are inserted to this string.
    string searchb; //Characters 5-7 of search are inserted to this string.
    string searchc; //Characters 9-11 of search are inserted to this string.
    string subsearch; //Used with the substring to fetch individual characters.
    string empty;

    fstream convfil;
    convfil.open("/home/user/Documents/MPrograms/filename.txt", ios::in);
    if (convfil.is_open())
    {
        while (convfil.good())
        {
            getline(convfil,search); //Fetch line from text file
            searcha = empty;
            searchb = empty;
            searchc = empty;

            /*From here to the end seems to be the problem.
              I provided code from the beginning of the program
              to make sure that if I were erring earlier in the code,
              someone would be able to catch that.*/

            for (int i=1; i<4; ++i)
            {
                subsearch = search.substr(i,1);
                searcha.insert(searcha.length(),subsearch);
                a = atof(searcha.c_str());
            }
            for (int i=5; i<8; ++i)
            {
                subsearch = search.substr(i,1);
                searchb.insert(searchb.length(),subsearch);
                b = atof(searchb.c_str());
            }
            for (int i=9; i<search.length(); ++i)
            {
                subsearch = search.substr(i,1);
                searchc.insert(searchc.length(),subsearch);
                c = atof(searchc.c_str());
            }

私は通常、これらの問題が発生したときに、他の人が抱えている可能性のある参照や問題を見て回避する方法を自分自身に教えていますが、この場合、私を助けるものは何も見つかりませんでした. これについてさまざまなバリエーションを試しましたが、問題は部分文字列に関係しており、これらのバリエーションのいずれでも部分文字列を取り除くことができなかったため、すべて同じエラーと同じ結果が出力ファイルに返されました。

4

2 に答える 2