前提・実現したいこと
タイピングゲームを以前から作っているのですが、出力しても文字列が表示されず困っています。
発生している問題・エラーメッセージ
出力
プレイするマップを選んでください 1 2
上のように番号とspaceまでは出てもその後の文字列が表示されません。
期待する出力
プレイするマップを選んでください 1 basic_map_1 2 basic_map_1
該当のソースコード
C++
#if _MSC_VER > 1922 && !defined(_SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING) #define _ITERATOR_DEBUG_LEVEL 2 #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING #endif #include <iostream> #include <experimental/filesystem> #include <fstream> #include <vector> #include <windows.h> #include <string> #include <windows.data.json.h> #include <stdio.h> #include <sstream> namespace fs = std::experimental::filesystem; std::vector<std::string> load_files() { std::vector<std::string> map_files; for (const fs::directory_entry& x : fs::directory_iterator("maps")) { std::string s = x.path().u8string(); map_files.push_back(s); } return map_files; } void select_map(std::vector<std::string>& map_files) { std::string text = u8"プレイするマップを選んでください\n"; int num = 1; for (int i = 0; i < map_files.size(); i++) { std::stringstream ss; std::ostringstream oss; oss << num; std::fstream fs(map_files[i]); std::string str; std::vector<std::string> lines(22); while (std::getline(fs, str)) { lines.push_back(str); } text = text + std::string(oss.str()) + std::string(u8" ") + std::string(lines[0]) + std::string(u8"\n"); num++; } std::cout << text << std::endl; return; } int main() { system("chcp 65001"); system("cls"); std::cout << "Welcome To Terminal_Typing v3.0" << std::endl; Sleep(1*1000); system("cls"); std::vector<std::string> map_files = load_files(); select_map(map_files); }
試したこと
typeid(std::string(lines[0])).name()を出力した結果、class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >が出力されました。
補足情報(FW/ツールのバージョンなど)
VisualStudio2022 Community
C++17
まだ回答がついていません
会員登録して回答してみよう