在特定索引c ++ / Qt的另一个字符串中插入字符串
Inserting string in another string at specific index c++/Qt
我有一个 QString
(这可能并不重要,因为我无论如何都将它转换为 std::string),其中包含一个文件的完整 unix 路径。例如/home/user/folder/name.of.another_file.txt
.
我想在此文件名的扩展名之前附加另一个字符串。例如我传递给函数"positive",这里我称它为vector_name
,最后我想得到/home/user/folder/name.of.another_file_positive.txt
(注意最后一个下划线应该由函数本身添加。
这是我的代码,但不幸的是它无法编译!!
QString temp(mPath); //copy value of the member variable so it doesnt change???
std::string fullPath = temp.toStdString();
std::size_t lastIndex = std::string::find_last_of(fullPath, ".");
std::string::insert(lastIndex, fullPath.append("_" + vector_name.toStdString()));
std::cout << fullPath;
我收到以下错误:
error: cannot call member function 'std::basic_string<_CharT, _Traits, _Alloc>::size_type std::basic_string<_CharT, _Traits, _Alloc>::find_last_of(const std::basic_string<_CharT, _Traits, _Alloc>&, std::basic_string<_CharT, _Traits, _Alloc>::size_type) const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]' without object
std::size_t lastIndex = std::string::find_last_of(fullPath, ".");
cannot call member function 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::insert(std::basic_string<_CharT, _Traits, _Alloc>::size_type, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]' without object
std::string::insert(lastIndex, fullPath.append("_" + vector_name.toStdString()));
P.S。如果您也能告诉我如何使用 QString 或 Qt 库本身实现此目的,我将非常感激!
错误的原因是find_last_of
和insert
是std::string
的成员函数,不是static或non-member函数。因此,您需要一个对象来访问该函数。
更正如下:
std::size_t lastIndex = fullPath.find_last_of(".");
fullPath.insert(lastIndex, "_" + vector_name.toStdString());
cout << fullPath;
此外,您可能想测试这些函数调用的 return 值。如果文件名中没有"."
怎么办?
我有一个 QString
(这可能并不重要,因为我无论如何都将它转换为 std::string),其中包含一个文件的完整 unix 路径。例如/home/user/folder/name.of.another_file.txt
.
我想在此文件名的扩展名之前附加另一个字符串。例如我传递给函数"positive",这里我称它为vector_name
,最后我想得到/home/user/folder/name.of.another_file_positive.txt
(注意最后一个下划线应该由函数本身添加。
这是我的代码,但不幸的是它无法编译!!
QString temp(mPath); //copy value of the member variable so it doesnt change???
std::string fullPath = temp.toStdString();
std::size_t lastIndex = std::string::find_last_of(fullPath, ".");
std::string::insert(lastIndex, fullPath.append("_" + vector_name.toStdString()));
std::cout << fullPath;
我收到以下错误:
error: cannot call member function 'std::basic_string<_CharT, _Traits, _Alloc>::size_type std::basic_string<_CharT, _Traits, _Alloc>::find_last_of(const std::basic_string<_CharT, _Traits, _Alloc>&, std::basic_string<_CharT, _Traits, _Alloc>::size_type) const [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]' without object
std::size_t lastIndex = std::string::find_last_of(fullPath, ".");
cannot call member function 'std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::insert(std::basic_string<_CharT, _Traits, _Alloc>::size_type, const std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]' without object
std::string::insert(lastIndex, fullPath.append("_" + vector_name.toStdString()));
P.S。如果您也能告诉我如何使用 QString 或 Qt 库本身实现此目的,我将非常感激!
错误的原因是find_last_of
和insert
是std::string
的成员函数,不是static或non-member函数。因此,您需要一个对象来访问该函数。
更正如下:
std::size_t lastIndex = fullPath.find_last_of(".");
fullPath.insert(lastIndex, "_" + vector_name.toStdString());
cout << fullPath;
此外,您可能想测试这些函数调用的 return 值。如果文件名中没有"."
怎么办?