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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) エクセルの条件付き書式で*を使いたい 4 2022/05/13 16:49
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
-
VC++で文字列から任意の文字を削除するにはどうしたらいいですか?
C言語・C++・C#
-
GetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・
C言語・C++・C#
-
-
4
Debug Assertion Failed?
C言語・C++・C#
-
5
CString から LPCTSTRの型に変換
C言語・C++・C#
-
6
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
7
画面を強制的に再描画させる方法
C言語・C++・C#
-
8
CStringについて
C言語・C++・C#
-
9
CStringの文字列検索&抜き出しについて
C言語・C++・C#
-
10
絶対パスからのファイル名の切り離し
C言語・C++・C#
-
11
deleteで開放するとエラーになる原因がわからない
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
C#でstringをポインタとして渡す
-
曜日を格納する配列の大きさ
-
文字列操作
-
C++で入力した文字列から数字を...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
プログラムによく出てくるst...
-
c言語のstrncpyについて
-
WSH(VBS)でJSONの文字列を読み...
-
TCL言語で文字列検索方法を教え...
-
【速いブラインドタッチ】手を...
-
VBAにてcolorindexを変数に格納...
-
日付チェック関数について
-
C言語 配列の長さの上限
-
関数から配列を返すには?
-
C言語のintとcharの違いってな...
-
擬似コード 長さがmの配列でな...
-
CImage GetBitsメソッドについて
-
配列の要素数に変数を入れたい...
-
ヘッダファイルと構造体
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
C++で入力した文字列から数字を...
-
%dなどの違い
-
C#でstringをポインタとして渡す
-
16進数を2文字ずつ配列に格納し...
-
TCL言語で文字列検索方法を教え...
-
プログラムによく出てくるst...
-
WSH(VBS)でJSONの文字列を読み...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
数字の入った配列をファイルへ...
-
構造体→文字列→構造体 をする方法
-
VB6.0でのバイナリデータの扱い...
-
char型配列の最大要素数
-
[C++]WCHARの1文字目しか表示で...
-
アルファベットをカウント、
-
VBA-DLLの引数受け渡しについて
-
c#で他のアプリの文字入力フォ...
-
C言語の勉強しています。すみま...
-
Shift_JIS(16進)を文字に変換す...
-
バイナリファイル中の日本語文...
おすすめ情報