/////コメント部のコードですがなぜ new char[]で指定した数要素数を確保しているにも関わらず同じ値にならないのでしょうか?読み込んだ文字列のデータは7なので7と表示されるはずなのですが4と表示されてしまいます。つまりint r = sizeof(str) / sizeof(str[0]);が悪いのですがこれの何が悪いのでしょうか?
やりたいことは読み込んだ文字列を同じ文字列の長さのchar配列を用意してそこに入れたいです。
cpp
1#include <iostream> 2#include <string> 3#include <fstream> 4 5int main() 6{ 7 std::ifstream ifs; 8 ifs.open("sample.txt"); 9 10 if (ifs.is_open() == true) 11 { 12 std::string data; 13 ifs >> data; 14 std::cout << "data.size(): " << data.size() << std::endl; 15 16 char* str = new char[(int)data.size()]; 17//////////////////////////////////////////////////////////////////////////////////////////// 18 int r = sizeof(str) / sizeof(str[0]); // 19 std::cout << r <<std::endl; 20//////////////////////////////////////////////////////////////////////////////////////////// 21 22 23 // errno_t err = strcpy_s(str,(rsize_t)10, data.c_str()); 24 25 std::cout <<"内容: "<< data << std::endl; 26 } 27 else { 28 std::cout << "ファイルが開けません。" << std::endl; 29 } 30 31 32 33 return 0; 34}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/18 08:33
2021/04/18 10:39 編集