
C++で文字列の中から,文字列の右端から特定の文字までの文字列を取り出すというものを作りたいと思っています。
右端から○文字取り出す。といった感じのコードは書けるのですが、特定の文字まで、というのがどうもうまくいきません。こちら、良いアドバイスをいただける方がいましたらよろしくお願いします。
例:ファイル名を抽出
文字列\system32\notepad.exeからnotepad.exeの部分だけを取り出したい。というものです。
初めに見つけた\まで取り出す・・とやればよいのでしょうが、その方法が今ひとつ良くわからないので、どうかご助力お願いいたします。

No.1ベストアンサー
- 回答日時:
具体的なコードにもよりますが、
> 右端から○文字取り出す。といった感じのコードは書けるのですが
だったら、ほぼできていると思います。
char src[1000]; に文字列が入っているとして、
そのコードに、
int j = src[] にある、最後の文字を示すインデックス
for(int i = 0; i < ○; i++)
{
src[j] を取り出す;
j--;
}
という部分があるなら、
while(src[j] != '\\')
に書き直すだけ。
または、
for(int j = src[] にある、最後の文字を示すインデックス; (j >=0 ) && src[j] != '\\'; j--)
にするとか。
でも、「どうもうまくいきません」なら、「こういうことをしたら、こうなってしまいました」というのがあるほうが親切ですね。
No.3
- 回答日時:
次のようにします。
#include <iostream>
#include <string>
int main()
{
std::string s("\\system32\\notepad.exe");
std::string::size_type pos = s.find_last_of('\\');
std::cout << s.substr(pos + 1) << std::endl;
}
No.2
- 回答日時:
※文字列をchar型の配列およびchar型のポインタで保持している場合のケースについてです。
strrchrという関数があります。
が、Shift_JISコードの場合、2つのコードで1つの文字を表すものがあり、その後ろのコードに'\'と同じコードが使われることがあります。
ですので、strchrを扱うと意図しない位置を取得する可能性があります。
Visual C++ であれば、Shift_JISコード(マルチバイト)用の_mbsrchrという関数を使ったほうがよいです。
http://msdn.microsoft.com/ja-jp/library/ftw0heb9 …
対象の文字列が完全にファイルのフルパスであれば、splitpathって関数が使えるのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アルファベットの出て来た回数
-
sprintf関数での文字列変換につ...
-
%dなどの違い
-
[C++]WCHARの1文字目しか表示で...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
TCL言語で文字列検索方法を教え...
-
WSH(VBS)でJSONの文字列を読み...
-
Excelですべての組合せ(重複組...
-
C言語において、 配列要素をひ...
-
C言語 配列の長さの上限
-
CStringからchar*への型変換に...
-
isalpha()関数について
-
配列を使わずに、変数名を動的...
-
C言語の配列のサイズ
-
Integer変数をカラにしたいので...
-
Run-Time Check Failure #3とい...
-
リッチテキストボックスの中身...
-
C# Listを使わずに2次元配列の...
-
define で 配列
-
allocってなんですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
C#でstringをポインタとして渡す
-
TCL言語で文字列検索方法を教え...
-
シリアル通信で0x00を送信した...
-
C++で入力した文字列から数字を...
-
16進数を2文字ずつ配列に格納し...
-
プログラムによく出てくるst...
-
WSH(VBS)でJSONの文字列を読み...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
%dなどの違い
-
VBA-DLLの引数受け渡しについて
-
C言語の問題です。
-
c#で他のアプリの文字入力フォ...
-
構造体→文字列→構造体 をする方法
-
int型での文字列の扱いについて
-
[C++]WCHARの1文字目しか表示で...
-
char a[]="thank you for comin...
-
VB6.0でのバイナリデータの扱い...
-
Excelシートを固定長のテキスト...
-
C#のGUIからサーバー側のPHPへ...
おすすめ情報